<?php
	
	//KLASS FÖR HANTERING AV ARRAYER
	class ArrayHandler 
	{
		//en funktion som vänder på ordningen på en array
		//tex. array("Kalle", "Nisse", "Olle") skall bli array("Olle", "Nisse", "Kalle");
		public function ReverseArray($array) 
		{
			$result = array();
			
			//Min kod ---------------------------------------------------				
			
			$i=0;		
			
			while (0 < count($array))			
			{
				$result[$i] = array_pop($array);
				$i++;
			}
			
			return $result;
			
			//-----------------------------------------------------------
		}
		
		//en funktion som returnerar sista elementet i en array
		public function ReturnLastItem($array) 
		{
			$result = array();
			
			//end()retunerar sista elementet i en array
			$result = end($array);			
			
			return $result; 
		}
		
	
	  //En funktion för test av funktionerna i array.php
		 public function Test() 
	  	 {
	  			  	
	  		//Två testarrayer
	  		$testArray = array(1, 2, 3, 4, 5, 6, 7);
			$testArrayTwo = array("one", "two","three", "four", "five", "six", "seven");
			
			//Testa ReverseArray
			$resultArray = $this->ReverseArray($testArray);
			$resultArrayTwo = $this->ReverseArray($testArrayTwo);
			$reversedArray = array(7, 6, 5, 4, 3, 2, 1);
			$reversedArrayTwo = array("seven", "six", "five", "four", "three", "two", "one");
			
			//Testar array med siffror och med strängar
			for ($i = 0; $i < 7; $i++) 
			{
				if (isset($resultArray[$i]) == false) 
				{
					echo "ReverseArray test misslyckades: inget index i returnerad array $i </br>";
					return false;
				} 
				else if ($resultArray[$i] != $reversedArray[$i])
				{
					echo "ReverseArray test misslyckades: felaktig array returnerades  </br>";
					return false;
				}
				
				if (isset($resultArrayTwo[$i]) == false) 
				{
					echo "ReverseArray test misslyckades: inget index i returnerad array $i </br>";
					return false;
				} 
				else if ($resultArrayTwo[$i] != $reversedArrayTwo[$i])
				{
					echo "ReverseArray test misslyckades: felaktig array returnerades  </br>";
					return false;
				}					
			}	
						
			//Testa ReturnLastItem
			if ($this->ReturnLastItem($testArray) != 7 && $this->ReturnLastItem($testArrayTwo) != "seven" ) 
			{
				echo "ReturnLastItem test misslyckades: felaktigt returvärde </br>";
				return false;
			}
			
			return true;   	
	  }
  }
  

